

package dao;

import entite.EtatEnum;
import entite.Questionnaire;
import java.util.List;
import javax.ejb.Local;

@Local
public interface QuestionnaireFacadeLocal {

    /**
     * Méthode de création d'un questionnaire
     * @param questionnaire à créer
     */
    void create(Questionnaire questionnaire);

    /**
     * Méthode de modification d'un questionnaire
     * @param questionnaire à modifier
     * @return questionnaire modifié
     */
    Questionnaire edit(Questionnaire questionnaire);

    /**
     * Méthode de suppression d'un questionnaire
     * @param questionnaire à supprimer
     */
    void remove(Questionnaire questionnaire);

    /**
     * Méthode pour trouver un questionnaire
     * @param id : id à trouver
     * @return questionnaire trouvé
     */
    Questionnaire find(Object id);

    /**
     * Méthode pour extraire tous les questionnaires
     * @return Liste de tous les questionnaires
     */
    List<Questionnaire> findAll();

    /**
     * Méthode qui permet de récupérer tous les questionnaires ayant un état précis
     * @param etat : état recherché
     * @return Liste des questionnaires ayant l'état recherché
     */
    List<Questionnaire> findAll(EtatEnum etat);

    /**
     * Méthode pour extraire la liste de tous les questionnaires
     * @param range : tableau d'indice
     * @return Liste des questionnaires
     */
    List<Questionnaire> findRange(int[] range);

    /**
     * Méthode pour extraire la liste de tous les questionnaires ayant un état précis en utilisant les indices
     * @param range : tableau d'indice
     * @param etat : état recherché
     * @return Liste des questionnaires ayant l'état recherché
     */
    List<Questionnaire> findRange(int[] range, EtatEnum etat);

    /**
     * Méthode qui permet de récupérer tous les questionnaires ouverts
     * @param etat : état recherché
     * @return Liste des questionnaire ouverts
     */
    List<Questionnaire> findOuvert(EtatEnum etat);

    /**
     * Méthode pour extraire la liste de tous les questionnaires ouverts en utilisant les indices
     * @param range : tableau d'indice
     * @param etat : état recherché
     * @return Liste des questionnaires ouverts
     */
    List<Questionnaire> findRangeOuvert(int[] range, EtatEnum etat);

    /**
     * Méthode pour compter le nombre de questionnaire
     * @return nombre trouvé
     */
    int count();

    List<Questionnaire> questionnaireRelancable();

}
